home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / Install / program files / Borland / BDS / 3.0 / Demos / CSharp / Applications / DotNETCube / dotNETCub.cs < prev    next >
Encoding:
Text File  |  2004-10-22  |  15.2 KB  |  452 lines

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7.  
  8. /*
  9.    dotNETCube a game demonstrating dynamically created graphics objects.
  10.    Example submitted by Endre I. Simay, Hungary
  11. */
  12.  
  13. namespace Project1 {
  14.  
  15. public class WinForm : System.Windows.Forms.Form {
  16.  
  17.         int complet = 1;
  18.         int first = 40;
  19.         int block = 40;
  20.         int sp = 5;
  21.         int steps = 0;
  22.  
  23.         private string [] colors = new string [4]{"Red","Blue","Green","Yellow"};
  24.  
  25.         private System.Windows.Forms.Panel pnlHost;
  26.         private System.Windows.Forms.Label lblComplett;
  27.         private System.Windows.Forms.Panel pnlSteps;
  28.         private System.Windows.Forms.Label lblStep1;
  29.         private System.Windows.Forms.Label lblStep2;
  30.         private System.Windows.Forms.Button btnShuffle;
  31.  
  32.         private System.Windows.Forms.Panel [,] pnlCubs = new System.Windows.Forms.Panel [4,4];
  33.         private System.Windows.Forms.Button [] btnUp = new System.Windows.Forms.Button [4];
  34.         private System.Windows.Forms.Button [] btnDown = new System.Windows.Forms.Button [4];
  35.         private System.Windows.Forms.Button [] btnLeft = new System.Windows.Forms.Button [4];
  36.         private System.Windows.Forms.Button [] btnRight = new System.Windows.Forms.Button [4];
  37.  
  38.  
  39.         public WinForm() {
  40.             this.InitializeComponent();
  41.         }
  42.  
  43.         public static void Main() {
  44.             System.Windows.Forms.Application.Run(new WinForm());
  45.         }
  46.  
  47.         private void InitializeComponent()
  48.         {
  49.             this.pnlHost = new System.Windows.Forms.Panel();
  50.             this.pnlSteps = new System.Windows.Forms.Panel();
  51.             this.lblStep2 = new System.Windows.Forms.Label();
  52.             this.lblStep1 = new System.Windows.Forms.Label();
  53.             this.btnShuffle = new System.Windows.Forms.Button();
  54.             this.lblComplett = new System.Windows.Forms.Label();
  55.             this.pnlSteps.SuspendLayout();
  56.             this.SuspendLayout();
  57.             // 
  58.             // pnlHost
  59.             // 
  60.             this.pnlHost.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
  61.             this.pnlHost.Location = new System.Drawing.Point(16, 16);
  62.             this.pnlHost.Name = "pnlHost";
  63.             this.pnlHost.Size = new System.Drawing.Size(272, 240);
  64.             this.pnlHost.TabIndex = 0;
  65.             // 
  66.             // pnlSteps
  67.             // 
  68.             this.pnlSteps.Controls.Add(this.lblStep2);
  69.             this.pnlSteps.Controls.Add(this.lblStep1);
  70.             this.pnlSteps.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
  71.             this.pnlSteps.Location = new System.Drawing.Point(16, 280);
  72.             this.pnlSteps.Name = "pnlSteps";
  73.             this.pnlSteps.Size = new System.Drawing.Size(272, 40);
  74.             this.pnlSteps.TabIndex = 1;
  75.             // 
  76.             // lblStep2
  77.             // 
  78.             this.lblStep2.Location = new System.Drawing.Point(168, 8);
  79.             this.lblStep2.Name = "lblStep2";
  80.             this.lblStep2.Size = new System.Drawing.Size(88, 16);
  81.             this.lblStep2.TabIndex = 1;
  82.             this.lblStep2.Text = "label2";
  83.             // 
  84.             // lblStep1
  85.             // 
  86.             this.lblStep1.AutoSize = true;
  87.             this.lblStep1.Location = new System.Drawing.Point(8, 8);
  88.             this.lblStep1.Name = "lblStep1";
  89.             this.lblStep1.Size = new System.Drawing.Size(94, 16);
  90.             this.lblStep1.TabIndex = 0;
  91.             this.lblStep1.Text = "Number of steps:";
  92.             // 
  93.             // btnShuffle
  94.             // 
  95.             this.btnShuffle.Location = new System.Drawing.Point(304, 16);
  96.             this.btnShuffle.Name = "btnShuffle";
  97.             this.btnShuffle.Size = new System.Drawing.Size(72, 24);
  98.             this.btnShuffle.TabIndex = 2;
  99.             this.btnShuffle.Text = "Shuffle";
  100.             this.btnShuffle.Click += new System.EventHandler(this.btnShuffle_Click);
  101.             // 
  102.             // lblComplett
  103.             // 
  104.             this.lblComplett.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
  105.             this.lblComplett.ForeColor = System.Drawing.SystemColors.InactiveCaption;
  106.             this.lblComplett.Location = new System.Drawing.Point(16, 336);
  107.             this.lblComplett.Name = "lblComplett";
  108.             this.lblComplett.Size = new System.Drawing.Size(304, 40);
  109.             this.lblComplett.TabIndex = 3;
  110.             this.lblComplett.Text = "Congratulations!!!";
  111.             // 
  112.             // WinForm
  113.             // 
  114.             this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  115.             this.BackColor = System.Drawing.Color.LightGray;
  116.             this.ClientSize = new System.Drawing.Size(397, 401);
  117.             this.Controls.Add(this.lblComplett);
  118.             this.Controls.Add(this.btnShuffle);
  119.             this.Controls.Add(this.pnlSteps);
  120.             this.Controls.Add(this.pnlHost);
  121.             this.MaximizeBox = false;
  122.             this.MaximumSize = new System.Drawing.Size(405, 435);
  123.             this.MinimumSize = new System.Drawing.Size(405, 435);
  124.             this.Name = "WinForm";
  125.             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  126.             this.Text = "dotNetCube";
  127.             this.Load += new System.EventHandler(this.WinForm_Load);
  128.             this.pnlSteps.ResumeLayout(false);
  129.             this.ResumeLayout(false);
  130.         }
  131.  
  132.         private void SetupForm () {
  133.             this.pnlHost.Size = new System.Drawing.Size(2*first+4*block+3*sp, 2*first+4*block+3*sp);
  134.             this.btnShuffle.Top = this.pnlHost.Top;
  135.  
  136.             for (int i = 0; i < 4; i++) {
  137.  
  138.                 btnUp[i] = new System.Windows.Forms.Button();
  139.                 btnDown[i] = new System.Windows.Forms.Button();
  140.                 btnLeft[i] = new System.Windows.Forms.Button();
  141.                 btnRight[i] = new System.Windows.Forms.Button();
  142.  
  143.                 this.btnUp[i].Location = new System.Drawing.Point(first+i*block+i*sp,first-25);
  144.                 this.btnUp[i].Size = new System.Drawing.Size(block, 20);
  145.                 this.btnUp[i].BackColor = System.Drawing.Color.Silver;
  146.  
  147.                 this.btnDown[i].Location = new System.Drawing.Point(first+i*block+i*sp,first+3*block+3*sp+block+5);
  148.                 this.btnDown[i].Size = new System.Drawing.Size(block, 20);
  149.                 this.btnDown[i].BackColor = System.Drawing.Color.Silver;
  150.  
  151.                 this.btnLeft[i].Location = new System.Drawing.Point(first-25,first+i*block+i*sp);
  152.                 this.btnLeft[i].Size = new System.Drawing.Size(20,block);
  153.                 this.btnLeft[i].BackColor = System.Drawing.Color.Silver;
  154.  
  155.                 this.btnRight[i].Location = new System.Drawing.Point(first+3*block+3*sp+block+5,first+i*block+i*sp);
  156.                 this.btnRight[i].Size = new System.Drawing.Size(20,block);
  157.                 this.btnRight[i].BackColor = System.Drawing.Color.Silver;
  158.  
  159.                 this.pnlHost.Controls.AddRange(new System.Windows.Forms.Control[] {
  160.                    this.btnUp[i],this.btnDown[i],this.btnLeft[i],this.btnRight[i] });
  161.  
  162.             }
  163.             this.btnUp[0].Click += new System.EventHandler(this.btnUp1_Click);
  164.             this.btnUp[1].Click += new System.EventHandler(this.btnUp2_Click);
  165.             this.btnUp[2].Click += new System.EventHandler(this.btnUp3_Click);
  166.             this.btnUp[3].Click += new System.EventHandler(this.btnUp4_Click);
  167.  
  168.             this.btnDown[0].Click += new System.EventHandler(this.btnDown1_Click);
  169.             this.btnDown[1].Click += new System.EventHandler(this.btnDown2_Click);
  170.             this.btnDown[2].Click += new System.EventHandler(this.btnDown3_Click);
  171.             this.btnDown[3].Click += new System.EventHandler(this.btnDown4_Click);
  172.  
  173.             this.btnLeft[0].Click += new System.EventHandler(this.btnLeft1_Click);
  174.             this.btnLeft[1].Click += new System.EventHandler(this.btnLeft2_Click);
  175.             this.btnLeft[2].Click += new System.EventHandler(this.btnLeft3_Click);
  176.             this.btnLeft[3].Click += new System.EventHandler(this.btnLeft4_Click);
  177.  
  178.             this.btnRight[0].Click += new System.EventHandler(this.btnRight1_Click);
  179.             this.btnRight[1].Click += new System.EventHandler(this.btnRight2_Click);
  180.             this.btnRight[2].Click += new System.EventHandler(this.btnRight3_Click);
  181.             this.btnRight[3].Click += new System.EventHandler(this.btnRight4_Click);
  182.  
  183.  
  184.             for (int i = 0; i < 4; i++) {
  185.                 for (int j = 0; j < 4; j++) {
  186.                     pnlCubs[j,i] = new System.Windows.Forms.Panel();
  187.                     pnlCubs[j,i].Size =  new System.Drawing.Size(block, block);
  188.                     pnlCubs[j,i].BackColor = System.Drawing.Color.FromName(colors[i]);
  189.                     pnlCubs[j,i].Location = new System.Drawing.Point(first+(j)*block+(j)*sp,
  190.                                             first+(i)*block+(i)*sp );
  191.                     this.pnlHost.Controls.AddRange(new System.Windows.Forms.Control[] {
  192.                                                        this.pnlCubs [j,i] });
  193.                 }
  194.             }
  195.  
  196.             pnlSteps.Top = pnlHost.Bottom + 20;
  197.             pnlSteps.Width = pnlHost.Width;
  198.             pnlSteps.Height = lblStep1.Height;
  199.             lblStep1.Top = 0;
  200.             lblStep1.Left = 0;
  201.             lblStep2.Top = 0;
  202.             lblStep2.Height = lblStep1.Height;
  203.             lblStep2.Left = lblStep1.Right+10;
  204.             lblStep2.Text = steps.ToString();
  205.             btnShuffle.Enabled = (complet == 1);
  206.             lblComplett.Left = pnlHost.Left;
  207.             lblComplett.ForeColor = System.Drawing.Color.FromName("Blue");
  208.             lblComplett.Visible = false;
  209.         }
  210.  
  211.         private int IfComplet () {
  212.             int tried = 0;
  213.             if (
  214.                 (
  215.                     (pnlCubs[0,1].BackColor == System.Drawing.Color.FromName(colors[1]))
  216.                     &&
  217.                     (pnlCubs[1,1].BackColor ==pnlCubs[0,1].BackColor)
  218.                     &&
  219.                     (pnlCubs[2,1].BackColor ==pnlCubs[0,1].BackColor)
  220.                     &&
  221.                     (pnlCubs[3,1].BackColor ==pnlCubs[0,1].BackColor)
  222.                 )
  223.                 &&
  224.                 (
  225.                     (pnlCubs[0,2].BackColor == System.Drawing.Color.FromName(colors[2]))
  226.                     &&
  227.                     (pnlCubs[1,2].BackColor ==pnlCubs[0,2].BackColor)
  228.                     &&
  229.                     (pnlCubs[2,2].BackColor ==pnlCubs[0,2].BackColor)
  230.                     &&
  231.                     (pnlCubs[3,2].BackColor ==pnlCubs[0,2].BackColor)
  232.                 )
  233.                 &&
  234.                 (
  235.                     (pnlCubs[0,3].BackColor == System.Drawing.Color.FromName(colors[3]))
  236.                     &&
  237.                     (pnlCubs[1,3].BackColor ==pnlCubs[0,3].BackColor)
  238.                     &&
  239.                     (pnlCubs[2,3].BackColor ==pnlCubs[0,3].BackColor)
  240.                     &&
  241.                     (pnlCubs[3,3].BackColor ==pnlCubs[0,3].BackColor)
  242.                 )
  243.                 &&
  244.                 (
  245.                     (pnlCubs[0,0].BackColor == System.Drawing.Color.FromName(colors[0]))
  246.                     &&
  247.                     (pnlCubs[1,0].BackColor ==pnlCubs[0,0].BackColor)
  248.                     &&
  249.                     (pnlCubs[2,0].BackColor ==pnlCubs[0,0].BackColor)
  250.                     &&
  251.                     (pnlCubs[3,0].BackColor ==pnlCubs[0,0].BackColor)
  252.                 )
  253.             )
  254.             {
  255.                 tried = 1;
  256.             }
  257.  
  258.             return tried;
  259.         }
  260.  
  261.         private void ColUp (int i) {
  262.             if ( complet != 1 ) {
  263.                 System.Drawing.Color tempcol = pnlCubs[i,0].BackColor;
  264.                 pnlCubs[i,0].BackColor = pnlCubs[i,1].BackColor;
  265.                 pnlCubs[i,1].BackColor = pnlCubs[i,2].BackColor;
  266.                 pnlCubs[i,2].BackColor = pnlCubs[i,3].BackColor;
  267.                 pnlCubs[i,3].BackColor = tempcol;
  268.                 steps++;
  269.             }
  270.         }
  271.         private void ColDown (int i) {
  272.             if ( complet != 1 ) {
  273.                 System.Drawing.Color tempcol = pnlCubs[i,3].BackColor;
  274.                 pnlCubs[i,3].BackColor = pnlCubs[i,2].BackColor;
  275.                 pnlCubs[i,2].BackColor = pnlCubs[i,1].BackColor;
  276.                 pnlCubs[i,1].BackColor = pnlCubs[i,0].BackColor;
  277.                 pnlCubs[i,0].BackColor = tempcol;
  278.                 steps++;
  279.             }
  280.         }
  281.  
  282.         private void RowLeft (int i) {
  283.             if ( complet != 1 ) {
  284.                 System.Drawing.Color tempcol = pnlCubs[0,i].BackColor;
  285.                 pnlCubs[0,i].BackColor = pnlCubs[1,i].BackColor;
  286.                 pnlCubs[1,i].BackColor = pnlCubs[2,i].BackColor;
  287.                 pnlCubs[2,i].BackColor = pnlCubs[3,i].BackColor;
  288.                 pnlCubs[3,i].BackColor = tempcol;
  289.                 steps++;
  290.             }
  291.         }
  292.  
  293.         private void RowRight (int i) {
  294.             if ( complet != 1 ) {
  295.                 System.Drawing.Color tempcol = pnlCubs[3,i].BackColor;
  296.                 pnlCubs[3,i].BackColor = pnlCubs[2,i].BackColor;
  297.                 pnlCubs[2,i].BackColor = pnlCubs[1,i].BackColor;
  298.                 pnlCubs[1,i].BackColor = pnlCubs[0,i].BackColor;
  299.                 pnlCubs[0,i].BackColor = tempcol;
  300.                 steps++;
  301.             }
  302.         }
  303.  
  304.         private void CompParams() {
  305.             this.lblStep2.Text=steps.ToString();
  306.             complet = IfComplet();
  307.             btnShuffle.Enabled = (complet == 1);
  308.             lblComplett.Visible = (complet == 1);
  309.         }
  310.  
  311.         private void btnUp1_Click(object sender, System.EventArgs e) {
  312.             if (complet !=1) {
  313.                 this.ColUp(0);
  314.                 CompParams();
  315.             }
  316.         }
  317.         private void btnUp2_Click(object sender, System.EventArgs e) {
  318.             if (complet !=1) {
  319.                 this.ColUp(1);
  320.                 CompParams();
  321.             }
  322.         }
  323.         private void btnUp3_Click(object sender, System.EventArgs e) {
  324.             if (complet !=1) {
  325.                 this.ColUp(2);
  326.                 CompParams();
  327.             }
  328.         }
  329.         private void btnUp4_Click(object sender, System.EventArgs e) {
  330.             if (complet !=1) {
  331.                 this.ColUp(3);
  332.                 CompParams();
  333.             }
  334.         }
  335.  
  336.         private void btnDown1_Click(object sender, System.EventArgs e) {
  337.             if (complet !=1) {
  338.                 this.ColDown(0);
  339.                 CompParams();
  340.             }
  341.         }
  342.  
  343.         private void btnDown2_Click(object sender, System.EventArgs e) {
  344.             if (complet !=1) {
  345.                 this.ColDown(1);
  346.                 CompParams();
  347.             }
  348.         }
  349.  
  350.         private void btnDown3_Click(object sender, System.EventArgs e) {
  351.             if (complet !=1) {
  352.                 this.ColDown(2);
  353.                 CompParams();
  354.             }
  355.         }
  356.  
  357.         private void btnDown4_Click(object sender, System.EventArgs e) {
  358.             if (complet !=1) {
  359.                 this.ColDown(3);
  360.                 CompParams();
  361.             }
  362.         }
  363.  
  364.         private void btnLeft1_Click(object sender, System.EventArgs e) {
  365.             if (complet !=1) {
  366.                 this.RowLeft(0);
  367.                 CompParams();
  368.             }
  369.         }
  370.         private void btnLeft2_Click(object sender, System.EventArgs e) {
  371.             if (complet !=1) {
  372.                 this.RowLeft(1);
  373.                 CompParams();
  374.             }
  375.         }
  376.         private void btnLeft3_Click(object sender, System.EventArgs e) {
  377.             if (complet !=1) {
  378.                 this.RowLeft(2);
  379.                 CompParams();
  380.             }
  381.         }
  382.         private void btnLeft4_Click(object sender, System.EventArgs e) {
  383.             if (complet !=1) {
  384.                 this.RowLeft(3);
  385.                 CompParams();
  386.             }
  387.         }
  388.  
  389.         private void btnRight1_Click(object sender, System.EventArgs e) {
  390.             if (complet !=1) {
  391.                 this.RowRight(0);
  392.                 CompParams();
  393.             }
  394.         }
  395.         private void btnRight2_Click(object sender, System.EventArgs e) {
  396.             if (complet !=1) {
  397.                 this.RowRight(1);
  398.                 CompParams();
  399.             }
  400.         }
  401.         private void btnRight3_Click(object sender, System.EventArgs e) {
  402.             if (complet !=1) {
  403.                 this.RowRight(2);
  404.                 CompParams();
  405.             }
  406.         }
  407.         private void btnRight4_Click(object sender, System.EventArgs e) {
  408.             if (complet !=1) {
  409.                 this.RowRight(3);
  410.                 CompParams();
  411.             }
  412.         }
  413.         private void WinForm_Load(object sender, System.EventArgs e) {
  414.             this.SetupForm();
  415.         }
  416.  
  417.         private void btnShuffle_Click(object sender, System.EventArgs e) {
  418.  
  419.             int shuffleVoid;
  420.             System.Random C = new System.Random();
  421.  
  422.             complet = 0;
  423.  
  424.             for (int i = 0; i < 20; i++) {
  425.                 shuffleVoid = C.Next(1,4);
  426.                 switch (shuffleVoid) {
  427.                 case 1: {
  428.                         ColUp (C.Next(1,4));
  429.                         break;
  430.                     }
  431.                 case 2: {
  432.                         ColDown (C.Next(1,4));
  433.                         break;
  434.                     }
  435.                 case 3: {
  436.                         RowLeft (C.Next(1,4));
  437.                         break;
  438.                     }
  439.                 case 4: {
  440.                         RowRight (C.Next(1,4));
  441.                         break;
  442.                     }
  443.                 }
  444.             }
  445.             steps = 0;
  446.             btnShuffle.Enabled = (complet==1);
  447.             lblComplett.Visible = (complet==1);
  448.         }
  449.     }
  450. }
  451.  
  452.